﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;

namespace HDS.Model
{
    //
    // 摘要:
    //     Defines logging severity levels.
    public enum LogLevel
    {
        //
        // 摘要:
        //     Logs that contain the most detailed messages. These messages may contain sensitive
        //     application data. These messages are disabled by default and should never be
        //     enabled in a production environment.
        Trace = 0,
        //
        // 摘要:
        //     Logs that are used for interactive investigation during development. These logs
        //     should primarily contain information useful for debugging and have no long-term
        //     value.
        Debug = 1,
        //
        // 摘要:
        //     Logs that track the general flow of the application. These logs should have long-term
        //     value.
        Information = 2,
        //
        // 摘要:
        //     Logs that highlight an abnormal or unexpected event in the application flow,
        //     but do not otherwise cause the application execution to stop.
        Warning = 3,
        //
        // 摘要:
        //     Logs that highlight when the current flow of execution is stopped due to a failure.
        //     These should indicate a failure in the current activity, not an application-wide
        //     failure.
        Error = 4,
        //
        // 摘要:
        //     Logs that describe an unrecoverable application or system crash, or a catastrophic
        //     failure that requires immediate attention.
        Critical = 5,
        //
        // 摘要:
        //     Not used for writing log messages. Specifies that a logging category should not
        //     write any messages.
        None = 6
    }

    public enum ErrorCode : int
    {
        OK = 0,
        //数据验证失败
        DataValidationFailed = -5,
        //访问超时
        Timeout = -10,
        //价格亏损
        PriceLoss = -20,
        //没有价格
        NotAvail = -30,
        //当日/周末/酒店关闭
        CloseDate = -31,
        //二次确认失败
        ConfirmFailure = -40,
        //搜索QPS限制
        SearchLimit = -50,
        //未推送
        NotPushed = -60,
        //下线
        Offline = - 70,
        //第三方API错误/第三方服务器错误
        ApiError = -100,
        //系统错误
        SystemError = -200,
        //未经授权
        Unauthorized = -401,
        NotFind = -404,
    }

    /// <summary>
    /// 酒店订单状态
    /// </summary>
    public enum OrderHotelStatus : int
    {
        [Description("预订成功")]
        Success = 10,
        [Description("预订中")]
        Pending = 5,
        [Description("新订单")]
        NewOrder = 0,
        [Description("取消中")]
        Canceling = -5,
        [Description("已取消")]
        Canceled = -10,
        [Description("预订失败")]
        Fail = -20
    }

    /// <summary>
    /// 分销商订单状态
    /// </summary>
    public enum DistributorOrderStatus : int
    {
        [Description("确认有房")]
        Confirmed = 10,
        [Description("待确认")]
        Pending = 5,
        [Description("预订取消")]
        Canceled = -10,
        [Description("确认无房")]
        Unconfirmed = -20,
    }

    /// <summary>
    /// 推送操作状态: 0: 未推送 10: 已推送 20: 已获取推送结果
    /// </summary>
    public enum PushStatus : int
    { 
        NotPush = 0,
        Pushed = 10,
        GetResult = 20
    }

    /// <summary>
    /// 推送结果: 0: 默认 10: 已推送 20: 已接受 30: 已激活 40: 已停用 50: 推送失败
    /// </summary>
    public enum PushResult : int
    {
        NotPush = 0,
        Pushed = 10,
        Accepted = 20,
        Active = 30,
        Deactivated = 40,
        Failed = 50
    }

    /// <summary>
    /// 餐食类型
    /// </summary>
    public enum MealType
    {
        [Description("无餐")]
        RoomOnly = 0,
        [Description("早餐")]
        Breakfast = 1,
        [Description("早+晚")]
        BreakfastDinner = 2,
        [Description("早+午")]
        BreakfastLunch = 3,
        [Description("全餐")]
        BreakfastLunchDinner = 4,
        [Description("午+晚")]
        LunchDinner = 5,
        [Description("午餐")]
        Lunch = 6,
        [Description("晚餐")]
        Dinner = 7
    }
}
